How sessions are managed in ASP.NET and ASP.NET Core
किसी भी वेब एप्प्लिकशन में सेशन का प्रबंधन एक महत्त्वपूर्ण घटक है। आइए समझते हैं कि ASP.NET और ASP.NET Core के अंतर्गत सेशन का मैनेजमेंट कैसे किया जाता है?
ASP.NET और ASP.NET Core दोनों में सेशन मैनेजमेंट मौजूद है, लेकिन उनकी प्रक्रिया और आर्किटेक्चर में कुछ महत्वपूर्ण अंतर हैं।
ASP.NET (Framework) में सेशन मैनेजमेंट
ASP.NET WebForms और ASP.NET MVC दोनों में Session State Management का समर्थन होता है। सेशन को स्टोर करने के लिए निम्नलिखित विकल्प होते हैं:
a) In-Process (InProc)
सेशन डेटा सर्वर की Memory (RAM) में स्टोर होता है। सबसे तेज़, लेकिन स्केलेबिलिटी में समस्या होती है। यदि एप्लिकेशन रीस्टार्ट हो जाए, तो सेशन डेटा खो जाता है।
Session["UserName"] = "Ajeet"; string user = Session["UserName"] as string;
b) State Server (OutProc)
सेशन डेटा ASP.NET State Server में स्टोर होता है। InProc की तुलना में धीमा, लेकिन स्केलेबल।
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" />
c) SQL Server
सेशन डेटा SQL Server Database में स्टोर होता है। अत्यधिक स्केलेबल और web farm सपोर्ट करता है।
<sessionState mode="SQLServer" sqlConnectionString="data source=SQLServer;initial catalog=SessionDB;Integrated Security=True" />
d) Custom Storage (Custom Mode)
डेवलपर अपनी जरूरत के अनुसार किसी NoSQL DB (जैसे Redis, MongoDB) या किसी अन्य स्टोरेज में सेशन डेटा को स्टोर कर सकते हैं।
<sessionState mode="Custom" customProvider="MyCustomSessionProvider" />
ASP.NET Core में सेशन मैनेजमेंट
ASP.NET Core में सेशन मैनेजमेंट थोड़ा अलग तरीके से काम करता है। कुछ महत्वपूर्ण बदलाव हुए हैं:
a) कोई InProc Mode नहीं है
ASP.NET Core में सेशन Distributed Cache आधारित होता है।
b) Middleware आधारित सेशन
ASP.NET Core में सेशन मैनेजमेंट को Middleware के रूप में जोड़ा जाता है।
builder.Services.AddDistributedMemoryCache();
builder.Services.AddSession(options => {
options.IdleTimeout = TimeSpan.FromMinutes(20);
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
});
c) सेशन डेटा स्टोर और उपयोग
ASP.NET Core में सेशन डेटा HttpContext.Session
के माध्यम
से एक्सेस किया जाता है।
HttpContext.Session.SetString("UserName", "Ajeet");
string user = HttpContext.Session.GetString("UserName");
d) Redis या SQL Server के साथ उपयोग
Redis Cache के साथ सेशन स्टोर करने के लिए:
builder.Services.AddStackExchangeRedisCache(options => {
options.Configuration = "localhost:6379"; });
SQL Server के साथ उपयोग के लिए:
builder.Services.AddDistributedSqlServerCache(
options => { options.ConnectionString = "Server=.;Database=SessionDB;Trusted_Connection=True;";
options.SchemaName = "dbo";
options.TableName = "Sessions";
});
ASP.NET और ASP.NET Core के सेशन मैनेजमेंट में मूलभूत अंतर
Feature | ASP.NET (Framework) | ASP.NET Core |
---|---|---|
Session Storage | InProc, State Server, SQL Server, Custom | Distributed Cache (Memory, Redis, SQL Server) |
Session Setup | Web.config में सेटिंग्स | Middleware के माध्यम से |
Session Handling | Session["key"] | HttpContext.Session.GetString()/SetString() |
InProc Mode | हां (Yes) | नहीं (No) |
State Server | हां (Yes) | नहीं (No) |
Scalability | कम (Limited) | अधिक (High) |
Performance | तेज़ (InProc) | Cache आधारित तेज़ Performance |
Next: ASP.NET Core में क्लास और सर्विस के बीच अंतर को गहराई से समझना
टिप्पणियाँ
एक टिप्पणी भेजें